DSLeague — Fantasy Sports app

A design system built from sport.

Brand, design system, and a full component library for DSLeague — a fantasy app where ten sports run year-round in one place.

Role
Founding Designer
Brand + system + components
Year
Aug 2024 — Ongoing
Live and shipping
Team
Founders
Designer
Developers
Deliverables
Brand identity
Design system
Component library
Prototypes
Status
Live on Vercel
100+ monthly users
Coming soon to the App Store

Most fantasy apps are built around one sport. DSLeague is built around ten.

DSLeague — short for Decathlon Sports League — is a fantasy app where owners draft teams across ten sports, not players within one. Football in fall, basketball in winter, golf in spring, soccer year-round. The league runs continuously, so there's always a sport in season.

Ten sports means ten looks, ten fan bases, ten sets of colors. My job: build one design system that holds them all together.

The system starts from sport.

I assigned each sport one core color — UEFA purple, MLB red, NHL black, NBA orange, and so on. Those ten colors became the foundation everything else is built on.

UEFA · Purple
Golf · Grey
Tennis · Yellow
NFL · Brown
NCAAF · Green
NCAAB · Pink
NBA · Orange
NHL · Black
MLB · Red
MLS · Blue
DSLeague foundation color tokens — sport primitives organized into scales and shades.
FIG. 01The ten sport colors, organized into one consistent set.
DSLeague semantic tokens organized by role — surface, foreground, accent, state.
FIG. 02Colors mapped to roles — background, text, accent — so every component speaks the same language.

The component library is built on top of all that. It's documented so the dev team can use it directly.

A portion of the DSLeague component library showing buttons, cards, and data displays.
FIG. 03Part of the DSLeague component library — consistent, mode-aware, and ready for developers to use.

A single product that feels like ten.

The result: each sport's screens carry its own identity, but the navigation, layout, and interactions are all one product. Moving from football to golf shouldn't feel like switching apps — it should feel like walking into a different room of the same building.

DSLeague Add Player flow — a user adds Adam Scott and chooses an existing player to drop.
FIG. 03Add player flow — sport-aware accent, shared modal patterns, real interaction.
DSLeague Players screen, light mode.
Light mode
DSLeague Players screen, dark mode.
Dark mode
FIG. 04Players, all sports — light and dark mode handled the same way everywhere.
DSLeague Players screen — NCAAB filter, light mode.
Light mode
DSLeague Players screen — NCAAB filter, dark mode.
Dark mode
FIG. 05Players, filtered to one sport — each sport keeps its color, the layout stays the same.
DSLeague add-player modal, static composition.
DSLeague Transactions view.
FIG. 06Add player and transactions — the same building blocks across two very different screens.
DSLeague mobile screens — Players, NCAAB filter, and Transactions on iPhone.
FIG. 07Mobile
Outcome

DSLeague is live and in active use. The design system isn't a portfolio piece — it's the backbone of a real product that ships and grows.

100+
Monthly active users
10
Sports, one system
2
Modes, built in from the start
More projects
All work →